package com.xiangge.find;

public class FindDemo1 {
    public static void main(String[] args) {
     /*
     二分查找的使用条件：数组必须是顺序排序
     使用二分查找，查找元素4在数组：{3,8,1,5,2,7,4,6,9}中第一次出现的索引
    */
        // 准备一个数组
        int[] arr = {3,8,1,5,2,7,4,6,9};
        // 定义要查找的元素
        int n = 4;
        // 定义最大、最小和中间的索引
        int min = 0;
        int max = arr.length-1;
        int mid;
        // 使用死循环模拟二分查找
        while (min <= max){
            // 求出当前这一轮循环的中间索引
            mid = (max + min) / 2;
            // 让查找的元素n和arr【mid】比大小
            if (n > arr[mid]){ // 说明n在mid的右边
                min = mid + 1;
            }else if (n < arr[mid]){ // 说明n在mid的左边
                max = mid -1;
            }else { // n在mid位置
                System.out.println(n + "第一次出现的索引:" + mid);
                return;
            }
        }
        System.out.println(n + "在数组中不存在");
    }
}
